package com.zhixing.order.service;

import com.zhixing.common.domain.dto.RoutePlanningDTO;
import com.zhixing.order.domain.dto.OrderGrabInfoDTO;
import com.zhixing.order.domain.dto.OrderLocationDTO;
import com.zhixing.order.domain.entity.OrderSendInfo;
import com.zhixing.order.domain.vo.*;

public interface OrderService {
    OrderEstimateInfoVO estimateOrderInfo(RoutePlanningDTO routePlanningDTO);

    Long submitOrder(Integer userId, OrderLocationDTO orderLocationDTO);

    void cancelOrder(Long orderId);

    void dispatchOrder(OrderSendInfo orderSendInfo);

    void grabOrder(OrderGrabInfoDTO orderGrabInfoDTO);

    DriverReceiveOrderVO driverGetReceiveOrderInfo(Long orderId);

    PassengerReceiveOrderVO passengerGetReceiveOrderInfo(Long orderId);

    void startService(Long orderId, String tailNumber);

    OrderStartInfoVO getOrderStartInfo(Long orderId);

    void arriveEnd(Long orderId);

    OrderPayInfoVO getOrderPayInfo(Long orderId);

    FeeRuleVO getOrderFeeRule(Long orderId);

    void payOrder(Long orderId, Integer couponId, Integer userId);

    void driverRemit(Long orderId);
}
